package com.resoft.bigdata.p2p.record;

import java.util.HashMap;
import java.util.Map;

import org.apache.hadoop.hbase.util.Bytes;



/***
 * 
 * @author ziv
 * 借款人信息表
 * 行键设计为：p2p机构代码 + 合同编号 + 日期 + 标志（1：企业或0：个人）+
 * 借款人证件号码（个人：jkrzjhm， 企业：tyshxydm）；
 */
public class DebtorInfo extends AbsRecord  implements RecordInterface {
	public static final String TABLE_NAME = "J0902";
	public static final String[] FAMILY_NAMES= {"F1"};
	
//	private String orgCode; //p2p 机构代码
//	private String bankId; //机构编码或名称，不确定
//	private String date; //上报日期，即业务放开日期
//	private String xh; //序号
//	private String xmht; //项目合同编号
	private String jkr; //借款人ID
	private String jkrxm; //借款人姓名（个人）
	private String jkrzjlx; //借款人证件类型（个人）
	private String jkrzjhm; //借款人证件号码（个人）
	private String qyqc; //企业全称
	private String tyshxydm;//统一社会信用代码
	private String fddmrzjhm; //法定代码人证件号码
	private String zptyqcs; //总平台逾期次数
	private String zptyqzjr; //本平台逾期总金额
	
//	public static final byte[]  ORG_CODE= Bytes.toBytes("ORGCODE");
//	public static final byte[]  ORG_NAME= Bytes.toBytes("ORGNAME");
//	public static final byte[]  DATADATE= Bytes.toBytes("DATADATE");
//	public static final byte[]  REPORTER= Bytes.toBytes("REPORTER");
//	public static final byte[]  CHECKER= Bytes.toBytes("CHECKER");
//	public static final byte[]  BANK_ID= Bytes.toBytes("DBANK_ID");
//	public static final byte[]  DATE= Bytes.toBytes("DDATE");
//	public static final byte[]  FLAG= Bytes.toBytes("FLAG"); // 0: PERSON, 1:COMPANY;
//	public static final byte[]  XH= Bytes.toBytes("XH");
//	public static final byte[]  XMHT= Bytes.toBytes("XMHT");
	public static final byte[]  JKR= Bytes.toBytes("JKR");
	public static final byte[]  JKRXM= Bytes.toBytes("JKRXM");
	public static final byte[]  JKRZJLX= Bytes.toBytes("JKRZJLX");
	public static final byte[]  JKRZJHM= Bytes.toBytes("JKRZJHM");
	public static final byte[]  QYQC= Bytes.toBytes("QYQC");
	public static final byte[]  TYSHXYDM= Bytes.toBytes("TYSHXYDM");
	public static final byte[]  FDDBRZJHM= Bytes.toBytes("FDDBRZJHM");
	public static final byte[]  ZPTYQCS= Bytes.toBytes("ZPTYQCS");
	public static final byte[]  ZPTYQZJR= Bytes.toBytes("ZPTYQZJR");
	
//	public String getOrgCode() {
//		return orgCode;
//	}
//	public void setOrgCode(String orgCode) {
//		this.orgCode = orgCode;
//	}
//	public String getBankId() {
//		return bankId;
//	}
//	public void setBankId(String bankId) {
//		this.bankId = bankId;
//	}
//	public String getDate() {
//		return date;
//	}
//	public void setDate(String date) {
//		this.date = date;
//	}
//	public String getXh() {
//		return xh;
//	}
//	public void setXh(String xh) {
//		this.xh = xh;
//	}
//	public String getXmht() {
//		return xmht;
//	}
//	public void setXmht(String xmht) {
//		this.xmht = xmht;
//	}
	public String getJkr() {
		return jkr;
	}
	public void setJkr(String jkr) {
		this.jkr = jkr;
	}
	public String getJkrxm() {
		return jkrxm;
	}
	public void setJkrxm(String jkrxm) {
		this.jkrxm = jkrxm;
	}
	public String getJkrzjlx() {
		return jkrzjlx;
	}
	public void setJkrzjlx(String jkrzjlx) {
		this.jkrzjlx = jkrzjlx;
	}
	public String getJkrzjhm() {
		return jkrzjhm;
	}
	public void setJkrzjhm(String jkrzjhm) {
		this.jkrzjhm = jkrzjhm;
	}
	public String getQyqc() {
		return qyqc;
	}
	public void setQyqc(String qyqc) {
		this.qyqc = qyqc;
	}
	public String getFddmrzjhm() {
		return fddmrzjhm;
	}
	public void setFddmrzjhm(String fddmrzjhm) {
		this.fddmrzjhm = fddmrzjhm;
	}
	public String getZptyqcs() {
		return zptyqcs;
	}
	public void setZptyqcs(String zptyqcs) {
		this.zptyqcs = zptyqcs;
	}
	public String getZptyqzjr() {
		return zptyqzjr;
	}
	public void setZptyqzjr(String zptyqzjr) {
		this.zptyqzjr = zptyqzjr;
	}
	

//	public byte[] getRowKey() throws Exception {
//	/*
//	 *  * 行键设计为：p2p机构代码 +  日期 + 序号
//	 * 
//	*/		
//		return getRowKey(orgCode, ddate, Integer.parseInt(xh));
//	}
//	
//	public static byte[] getRowKey(String orgCode, String dateString, int xh) throws Exception{
//		byte [] buffer = new byte[12];
//		Bytes.putInt(buffer, 0, orgCode.hashCode());
//		int days = DateUtil.reverseDate(dateString);
//		if(days == Integer.MAX_VALUE){
//			throw  new Exception("Bad date");
//		}
//		Bytes.putInt(buffer, 4, days);
//		Bytes.putInt(buffer, 8, xh);
//		return buffer ;
//	}
	
	public Map<byte[], byte[]> getCells() {
		Map<byte[],byte[]> cells = new HashMap<byte[],byte[]>();
		Map<byte[], byte[]> superCells = super.getCells();
		cells.putAll(superCells);
		
//		cells.put(ORG_CODE, Bytes.toBytes(orgCode));
//		cells.put(BANK_ID, Bytes.toBytes(bankId));
//		cells.put(DATE, Bytes.toBytes(ddate));
//		cells.put(XH, Bytes.toBytes(xh));
//		cells.put(XMHT, Bytes.toBytes(xmht));
		if(jkrzjhm != null){
//			cells.put(FLAG, Bytes.toBytes(0));
			cells.put(JKR, Bytes.toBytes(jkr));
			cells.put(JKRXM, Bytes.toBytes(jkrxm));
			cells.put(JKRZJLX, Bytes.toBytes(jkrzjlx));
			cells.put(JKRZJHM, Bytes.toBytes(jkrzjhm));
		}else if(tyshxydm != null){
//			cells.put(FLAG, Bytes.toBytes(1));
			cells.put(QYQC, Bytes.toBytes(qyqc));
			cells.put(TYSHXYDM, Bytes.toBytes(tyshxydm));
			cells.put(FDDBRZJHM, Bytes.toBytes(fddmrzjhm));
		}

		cells.put(ZPTYQCS, Bytes.toBytes(zptyqcs));
		cells.put(ZPTYQZJR, Bytes.toBytes(zptyqzjr));
		return cells;
	}
	public String getTyshxydm() {
		return tyshxydm;
	}
	public void setTyshxydm(String tyshxydm) {
		this.tyshxydm = tyshxydm;
	}
	
	public String getCreatePhoenixTableSQL() {
		//TODO:phoenix
		StringBuilder sb = new StringBuilder();
		sb.append("CREATE TABLE " +  TABLE_NAME + "  ");
		sb.append("( PK varbinary PRIMARY KEY, ");
		sb.append("  F1." + Bytes.toString(ORG_CODE) + "  varchar, ");
		sb.append("  F1." + Bytes.toString(BANK_ID )+ "  varchar, ");
		sb.append("  F1." + Bytes.toString(DATE )+ "  varchar, ");
		sb.append("  F1." + Bytes.toString(XH )+ "  varchar, ");
		sb.append("  F1." + Bytes.toString(XMHT )+ "  varchar, ");
		sb.append("  F1." + Bytes.toString(JKR )+ "  varchar, ");
		sb.append("  F1." + Bytes.toString(JKRXM) + "  varchar ");
		sb.append("  F1." + Bytes.toString(JKRZJLX )+ "  varchar, ");
		sb.append("  F1." + Bytes.toString(JKRZJHM) + "  varchar ");
		sb.append("  F1." + Bytes.toString(QYQC )+ "  varchar, ");
		sb.append("  F1." + Bytes.toString(TYSHXYDM) + "  varchar ");
		sb.append("  F1." + Bytes.toString(FDDBRZJHM) + "  varchar ");
		sb.append("  F1." + Bytes.toString(ZPTYQCS) + "  varchar ");
		sb.append("  F1." + Bytes.toString(ZPTYQZJR) + "  varchar ");	
		sb.append(")");
 
		return sb.toString();
	}

	
//	public void setValue(byte[] key, byte[] value){
//		if(Bytes.compareTo(key, DATE) == 0){
//			setDate(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, ORG_CODE) == 0){
//			setOrgCode(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, BANK_ID) == 0){
//			setBankId(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, DATE) == 0){
//			setDate(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, XH) == 0){
//			setXh(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, XMHT) == 0){
//			setXmht(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, JKR) == 0){
//			setJkr(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, JKRXM) == 0){
//			setJkrxm(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, JKRZJLX) == 0){
//			setJkrzjlx(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, JKRZJHM) == 0){
//			setJkrzjhm(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, QYQC) == 0){
//			setQyqc(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, TYSHXYDM) == 0){
//			setTyshxydm(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, FDDBRZJHM) == 0){
//			setFddmrzjhm(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, ZPTYQCS) == 0){
//			setZptyqcs(Bytes.toString(value));
//		}else if(Bytes.compareTo(key, ZPTYQZJR) == 0){
//			setZptyqcs(Bytes.toString(value));
//		}else{
//			System.err.println(TABLE_NAME + ", Key:" + key + ", Value:" + value);
//		}
//	}
	
	

	
	public String getTableName() {
		return TABLE_NAME;
	}

	@Override
	public String toString() {
		return "DebtorInfo [jkr=" + jkr + ", jkrxm=" + jkrxm + ", jkrzjlx="
				+ jkrzjlx + ", jkrzjhm=" + jkrzjhm + ", qyqc=" + qyqc
				+ ", tyshxydm=" + tyshxydm + ", fddmrzjhm=" + fddmrzjhm
				+ ", zptyqcs=" + zptyqcs + ", zptyqzjr=" + zptyqzjr
				+ ", orgCode=" + orgCode + ", dataDate=" + dataDate
				+ ", bankId=" + bankId + ", ddate=" + ddate + ", xh=" + xh
				+ ", xmht=" + xmht + "]";
	}
	public String[] getFamilies() {
		return FAMILY_NAMES;
	}
	
}
